// 环境变量在此定义, 不要改logistic-gw.js了
(function(window, $) {
    'use strict';
    /**
     * 系统全局开发环境变量
     * @type {string}
     */
    var env = window.env = 'pro'; // dev pre pro
    var host = location.hostname;
    if (host === 'jdwl-pre.jd.com' || host === 'express.jdl.cn') {
        env = window.env = 'pre';
    } else if (host === 'test.jd.com') {
        env = window.env = 'dev';
    } else if(host === 'test.jdl.cn') {
        env = window.env = 'dev';
    }


    var gwConfig = {
        'appName':'c2c',
        //客户端类型： 如：apple（苹果手机），android（安卓手机），m(m页)等
        'client':'m',
        //应用Id，由passport分配
        'appid':'158',
        //app(只使用app的登录态),m(只使用m的登录态),pc(只使用pc的登录态),wq(只使用wq的登录态),mix(混用方式，按app/m/pc/wq的顺序，若前者为空，则依次验证下一种登录态)
        'ticket_type':'pc'
    };
    var loginUrl = (window.env === 'dev' ? 'http': 'https') + '://passport.jdl.cn/uc/login?ReturnUrl=';

    var LOP_DN_MAP = {
        dev: 'jdwl.com',
        pre: 'jdwl-pre.com',
        pro: 'jdwl.com'
    };

    var url_map = {
        dev: '//test-proxy.jd.com',
        pre: 'https://uat-proxy.jd.com',
        pro: 'https://proxy.jdl.cn'
    };
    window.gw = function(api, params, resolve, reject) {
        $.ajax({
            headers: {
                'LOP-DN': LOP_DN_MAP[env],
                'ClientInfo': JSON.stringify({
                    'appName': gwConfig.appName,
                    'client': gwConfig.client
                }),
                'AppParams': JSON.stringify({
                    'appid': gwConfig.appid,
                    'ticket_type': gwConfig.ticket_type
                }),

                // 监控业务需求
                'jexpress-trace-id': window.traceId,
                'event-id': window.guid(),
                'app-key': 'jexpress',
                'biz-type': 'service-monitor',
                'source-client': 4,
                'access': 'JDWL-GW',
                'jexpress-report-time': Date.now(),
                'version': '1.0.0'

            },
            url: url_map[window.env] + api,
            cache : false,
            contentType: 'application/json; charset=utf-8',
            type: 'post',
            data: JSON.stringify(params),
            xhrFields: {
                withCredentials: true
            },
            processData: false,
            success:function (res) {
                res = typeof res === "string" ? JSON.parse(res) : res;
                resolve && resolve(res);
            },
            error:function (err) {

                if (err.status === 401){
                    window.location.href = loginUrl + encodeURIComponent(window.location.href);
                };

                reject && reject(err);
            },
        });
    };
    window.syncgw = function(api, params, resolve, reject) {
        $.ajax({
            headers: {
                'LOP-DN': LOP_DN_MAP[env],
                'ClientInfo': JSON.stringify({
                    'appName': gwConfig.appName,
                    'client': gwConfig.client
                }),
                'AppParams': JSON.stringify({
                    'appid': gwConfig.appid,
                    'ticket_type': gwConfig.ticket_type
                }),

                // 监控业务需求
                'jexpress-trace-id': window.traceId,
                'event-id': window.guid(),
                'app-key': 'jexpress',
                'biz-type': 'service-monitor',
                'source-client': 4,
                'access': 'JDWL-GW',
                'jexpress-report-time': Date.now(),
                'version': '1.0.0'

            },
            url: url_map[window.env] + api,
            cache : false,
            async:false,
            contentType: 'application/json; charset=utf-8',
            type: 'post',
            data: JSON.stringify(params),
            xhrFields: {
                withCredentials: true
            },
            processData: false,
            success:function (res) {
                res = typeof res === "string" ? JSON.parse(res) : res;
                resolve && resolve(res);
            },
            error:function (err) {

                if (err.status === 401){
                    window.location.href = loginUrl + encodeURIComponent(window.location.href);
                };

                reject && reject(err);
            },
        });
    };


})(window, window.$);
